{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Modeling and Simulation in Python\n",
    "\n",
    "Copyright 2018 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure Jupyter so figures appear in the notebook\n",
    "%matplotlib inline\n",
    "\n",
    "# Configure Jupyter to display the assigned value after an assignment\n",
    "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
    "\n",
    "# import functions from the modsim.py module\n",
    "from modsim import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Modeling tree growth\n",
    "\n",
    "This case study is based on \"[Height-Age Curves for Planted Stands of Douglas Fir, with Adjustments for Density](http://www.cfr.washington.edu/research.smc/working_papers/smc_working_paper_1.pdf)\", a working paper by Flewelling, Collier, Gonyea, Marshall, and Turnblom.\n",
    "\n",
    "It provides \"site index curves\", which are curves that show the expected height of the tallest tree in a stand of Douglas firs as a function of age, for a stand where the trees are the same age.\n",
    "\n",
    "Depending on the quality of the site, the trees might grow more quickly or slowing.  So each curve is identified by a \"site index\" that indicates the quality of the site.\n",
    "\n",
    "I'll start with some of the data from their Table 1.  Here's the sequence of ages."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "years = [2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30,\n",
    "         35, 40, 45, 50, 55, 60, 65, 70]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's the series of heights for a site with index 45, indicating that height at 30 years is 45 feet."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>4.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>6.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>14.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>25.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>35.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>45.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>53.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>61.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>68.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>75.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>81.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>87.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>92.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>97.63</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "2      1.40\n",
       "3      1.49\n",
       "4      1.75\n",
       "5      2.18\n",
       "6      2.78\n",
       "8      4.45\n",
       "10     6.74\n",
       "15    14.86\n",
       "20    25.39\n",
       "25    35.60\n",
       "30    45.00\n",
       "35    53.65\n",
       "40    61.60\n",
       "45    68.92\n",
       "50    75.66\n",
       "55    81.85\n",
       "60    87.56\n",
       "65    92.80\n",
       "70    97.63\n",
       "dtype: float64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "site45 = TimeSeries([1.4, 1.49, 1.75, 2.18, 2.78, 4.45, 6.74,\n",
    "                    14.86, 25.39, 35.60, 45.00, 53.65, 61.60,\n",
    "                    68.92, 75.66, 81.85, 87.56, 92.8, 97.63],\n",
    "                    index=years)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the series for site index 65."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3.79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>10.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>23.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>37.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>51.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>65.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>77.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>89.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>99.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>109.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>117.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>125.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>132.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>138.84</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "2       1.40\n",
       "3       1.56\n",
       "4       2.01\n",
       "5       2.76\n",
       "6       3.79\n",
       "8       6.64\n",
       "10     10.44\n",
       "15     23.26\n",
       "20     37.65\n",
       "25     51.66\n",
       "30     65.00\n",
       "35     77.50\n",
       "40     89.07\n",
       "45     99.66\n",
       "50    109.28\n",
       "55    117.96\n",
       "60    125.74\n",
       "65    132.68\n",
       "70    138.84\n",
       "dtype: float64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "site65 = TimeSeries([1.4, 1.56, 2.01, 2.76, 3.79, 6.64, 10.44, \n",
    "                    23.26, 37.65, 51.66, 65.00, 77.50, 89.07, \n",
    "                    99.66, 109.28, 117.96, 125.74, 132.68, 138.84],\n",
    "                    index=years)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And for site index 85."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2       1.40\n",
       "3       1.80\n",
       "4       2.71\n",
       "5       4.09\n",
       "6       5.92\n",
       "8      10.73\n",
       "10     16.81\n",
       "15     34.03\n",
       "20     51.26\n",
       "25     68.54\n",
       "30     85.00\n",
       "35    100.34\n",
       "40    114.33\n",
       "45    126.91\n",
       "50    138.06\n",
       "55    147.86\n",
       "60    156.39\n",
       "65    163.76\n",
       "70    170.10\n",
       "dtype: float64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "site85 = Series([1.4, 1.8, 2.71, 4.09, 5.92, 10.73, 16.81, \n",
    "                 34.03, 51.26, 68.54, 85, 100.34, 114.33,\n",
    "                 126.91, 138.06, 147.86, 156.39, 163.76, 170.10],\n",
    "               index=years)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's what the curves look like:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure to file figs/trees-fig01.pdf\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(site85, label='SI 85')\n",
    "plot(site65, label='SI 65')\n",
    "plot(site45, label='SI 45')\n",
    "decorate(xlabel='Time (years)',\n",
    "         ylabel='Height (feet)')\n",
    "\n",
    "savefig('figs/trees-fig01.pdf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For my examples I'll work with the SI 65 data; as an exercise, you can run the notebook again with either of the other curves."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = site65;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model 1\n",
    "\n",
    "As a starting place, let's assume that the ability of the tree to gain mass is limited by the area it exposes to sunlight, and that the growth rate (in mass) is proportional to that area.  In that case we can write:\n",
    "\n",
    "$ m_{n+1} = m_n + \\alpha A$\n",
    "\n",
    "where $m_n$ is the mass of the at time step $n$, $A$ is the area exposed to sunlight, and $\\alpha$ is an unknown growth parameter.\n",
    "\n",
    "To get from $m$ to $A$, I'll make the additional assumption that mass is proportional to height raised to an unknown power:\n",
    "\n",
    "$ m = \\beta h^D $\n",
    "\n",
    "where $h$ is height, $\\beta$ is an unknown constant of proportionality, and $D$ is the dimension that relates height and mass.  \n",
    "\n",
    "We'll start by assuming $D=3$, but we'll revisit that assumption.\n",
    "\n",
    "Finally, we'll assume that area is proportional to height squared:\n",
    "\n",
    "$ A = \\gamma h^2$\n",
    "\n",
    "I'll specify height in feet, and choose units for mass and area so that $\\beta=1$ and $\\gamma=1$.\n",
    "\n",
    "Putting all that together, we can write a difference equation for height:\n",
    "\n",
    "$ h_{n+1}^D = h_n^D + \\alpha h_n^2 $\n",
    "\n",
    "Now let's solve it.  Here's a system object with the parameters and initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>alpha</th>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dim</th>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>h_0</th>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "alpha     7.0\n",
       "dim       3.0\n",
       "h_0       1.4\n",
       "t_0       2.0\n",
       "t_end    70.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alpha = 7\n",
    "dim = 3\n",
    "\n",
    "t_0 = get_first_label(data)\n",
    "t_end = get_last_label(data)\n",
    "\n",
    "h_0 = get_first_value(data)\n",
    "\n",
    "system = System(alpha=alpha, dim=dim, \n",
    "                h_0=h_0, t_0=t_0, t_end=t_end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's an update function that takes the current height as a parameter and returns the height during the next time step."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def update(height, t, system):\n",
    "    \"\"\"Update height based on geometric model.\n",
    "    \n",
    "    height: current height in feet\n",
    "    t: what year it is\n",
    "    system: system object with model parameters\n",
    "    \"\"\"\n",
    "    area = height**2\n",
    "    mass = height**system.dim\n",
    "    mass += system.alpha * area\n",
    "    return mass**(1/system.dim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Test the update function with the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.5439688299649954"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "update(h_0, t_0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's our usual version of `run_simulation`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_simulation(system, update_func):\n",
    "    \"\"\"Simulate the system using any update function.\n",
    "    \n",
    "    system: System object\n",
    "    update_func: function that computes the population next year\n",
    "    \n",
    "    returns: TimeSeries\n",
    "    \"\"\"\n",
    "    results = TimeSeries()\n",
    "    results[system.t_0] = system.h_0\n",
    "    \n",
    "    for t in linrange(system.t_0, system.t_end):\n",
    "        results[t+1] = update_func(results[t], t, system)\n",
    "        \n",
    "    return results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's how we run it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "66    140.497321\n",
       "67    142.792941\n",
       "68    145.089152\n",
       "69    147.385935\n",
       "70    149.683273\n",
       "dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = run_simulation(system, update)\n",
    "results.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_results(results, data):\n",
    "    plot(results, ':', label='model', color='gray')\n",
    "    plot(data, label='data')\n",
    "    decorate(xlabel='Time (years)',\n",
    "             ylabel='Height (feet)')\n",
    "    \n",
    "plot_results(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result converges to a straight line.\n",
    "\n",
    "I chose the value of `alpha` to fit the data as well as I could, but it is clear that the data have curvature that's not captured by the model.\n",
    "\n",
    "Here are the errors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2      0.000000\n",
       "3      0.983969\n",
       "4      1.942915\n",
       "5      2.792070\n",
       "6      3.496882\n",
       "8      4.387116\n",
       "10     4.557437\n",
       "15     2.194275\n",
       "20    -1.346851\n",
       "25    -4.304519\n",
       "30    -6.468590\n",
       "35    -7.709926\n",
       "40    -7.962119\n",
       "45    -7.189989\n",
       "50    -5.413433\n",
       "55    -2.669382\n",
       "60     0.997125\n",
       "65     5.522310\n",
       "70    10.843273\n",
       "dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "errors = results - data\n",
    "errors.dropna()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's the mean absolute error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.251693738559428"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def mean_abs_error(results, data):\n",
    "    return np.mean(np.abs(results-data))\n",
    "\n",
    "mean_abs_error(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This model might explain why the height of a tree grows roughly linearly:\n",
    "\n",
    "1. If area is proportional to $h^2$ and mass is proportional to $h^3$, and\n",
    "\n",
    "2. Change in mass is proportional to area, and\n",
    "\n",
    "3. Height grows linearly, then\n",
    "\n",
    "4. Area grows in proportion to $h^2$, and\n",
    "\n",
    "5. Mass grows in proportion to $h^3$.\n",
    "\n",
    "If the goal is to explain (approximate) linear growth, we might stop there.  But this model does not fit the data particularly well, and it implies that trees could keep growing forever.\n",
    "\n",
    "So we might want to do better."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a second attempt, let's suppose that we don't know $D$.  In fact, we don't, because trees are not like simple solids; they are more like fractals, which have [fractal dimension](https://en.wikipedia.org/wiki/Fractal_dimension).\n",
    "\n",
    "I would expect the fractal dimension of a tree to be between 2 and 3, so I'll guess 2.5."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7, 2.8)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alpha = 7\n",
    "dim = 2.8\n",
    "\n",
    "params = alpha, dim"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I'll wrap the code from the previous section is a function that takes the parameters as inputs and makes a `System` object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_system(params, data):\n",
    "    \"\"\"Makes a System object.\n",
    "    \n",
    "    params: sequence of alpha, dim\n",
    "    data: Series\n",
    "    \n",
    "    returns: System object\n",
    "    \"\"\"\n",
    "    alpha, dim = params\n",
    "    \n",
    "    t_0 = get_first_label(data)\n",
    "    t_end = get_last_label(data)\n",
    "\n",
    "    h_0 = get_first_value(data)\n",
    "\n",
    "    return System(alpha=alpha, dim=dim, \n",
    "                  h_0=h_0, t_0=t_0, t_end=t_end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's how we use it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>alpha</th>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dim</th>\n",
       "      <td>2.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>h_0</th>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "alpha     7.0\n",
       "dim       2.8\n",
       "h_0       1.4\n",
       "t_0       2.0\n",
       "t_end    70.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system = make_system(params, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With different values for the parameters, we get curves with different behavior.  Here are a few that I chose by hand."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_and_plot(alpha, dim, data):\n",
    "    params = alpha, dim\n",
    "    system = make_system(params, data)\n",
    "    results = run_simulation(system, update)\n",
    "    plot(results, ':', color='gray')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "run_and_plot(0.145, 2, data)\n",
    "run_and_plot(0.58, 2.4, data)\n",
    "run_and_plot(2.8, 2.8, data)\n",
    "run_and_plot(6.6, 3, data)\n",
    "run_and_plot(15.5, 3.2, data)\n",
    "run_and_plot(38, 3.4, data)\n",
    "\n",
    "plot(data, label='data')\n",
    "decorate(xlabel='Time (years)',\n",
    "             ylabel='Height (feet)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To find the parameters that best fit the data, I'll use `leastsq`.\n",
    "\n",
    "We need an error function that takes parameters and returns errors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def error_func(params, data, update_func):\n",
    "    \"\"\"Runs the model and returns errors.\n",
    "    \n",
    "    params: sequence of alpha, dim\n",
    "    data: Series\n",
    "    update_func: function object\n",
    "    \n",
    "    returns: Series of errors\n",
    "    \"\"\"\n",
    "    print(params)\n",
    "    system = make_system(params, data)\n",
    "    results = run_simulation(system, update_func)\n",
    "    return (results - data).dropna()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's how we use it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(7, 2.8)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2       0.000000\n",
       "3       1.148852\n",
       "4       2.494726\n",
       "5       3.987474\n",
       "6       5.596116\n",
       "8       9.023410\n",
       "10     12.588184\n",
       "15     21.692189\n",
       "20     32.897280\n",
       "25     47.207627\n",
       "30     64.370278\n",
       "35     84.203833\n",
       "40    106.551950\n",
       "45    131.281973\n",
       "50    158.242758\n",
       "55    187.291743\n",
       "60    218.296906\n",
       "65    251.121491\n",
       "70    285.640417\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "errors = error_func(params, data, update)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can pass `error_func` to `leastsq`, which finds the parameters that minimize the squares of the errors."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[7.  2.8]\n",
      "[7.  2.8]\n",
      "[7.  2.8]\n",
      "[7.0000001 2.8      ]\n",
      "[7.         2.80000004]\n",
      "[6.92221276 2.90250933]\n",
      "[6.92221286 2.90250933]\n",
      "[6.92221276 2.90250937]\n",
      "[9.09216731 3.04344997]\n",
      "[9.09216745 3.04344997]\n",
      "[9.09216731 3.04345002]\n",
      "[11.32004198  3.11949616]\n",
      "[11.32004214  3.11949616]\n",
      "[11.32004198  3.11949621]\n",
      "[11.45136365  3.11757872]\n",
      "[11.45136382  3.11757872]\n",
      "[11.45136365  3.11757877]\n",
      "[11.46621698  3.11792121]\n",
      "[11.46621715  3.11792121]\n",
      "[11.46621698  3.11792126]\n",
      "[11.46393831  3.11787315]\n",
      "[11.46393848  3.11787315]\n",
      "[11.46393831  3.1178732 ]\n",
      "[11.46425733  3.11787985]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>fvec</th>\n",
       "      <td>[0.0, 1.259430004271867, 2.5891995571210504, 3...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>nfev</th>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>fjac</th>\n",
       "      <td>[[-1211.616390427339, -0.0007452893651874872, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ipvt</th>\n",
       "      <td>[2, 1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qtf</th>\n",
       "      <td>[4.18653877720665e-05, 0.00060508849225549]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cov_x</th>\n",
       "      <td>[[0.2779654957988092, 0.005806517068509026], [...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mesg</th>\n",
       "      <td>Both actual and predicted relative reductions ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ier</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "fvec     [0.0, 1.259430004271867, 2.5891995571210504, 3...\n",
       "nfev                                                    22\n",
       "fjac     [[-1211.616390427339, -0.0007452893651874872, ...\n",
       "ipvt                                                [2, 1]\n",
       "qtf            [4.18653877720665e-05, 0.00060508849225549]\n",
       "cov_x    [[0.2779654957988092, 0.005806517068509026], [...\n",
       "mesg     Both actual and predicted relative reductions ...\n",
       "ier                                                      1\n",
       "dtype: object"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_params, details = leastsq(error_func, params, data, update)\n",
    "details"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using the best parameters we found, we can run the model and plot the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yy23AHDVVVdx6NAhenp6+Nu//Vt27NhBaWkpN954I3v37g3aZxJCTG/U5WHElsTxxgiO1FkYNJyM37pkj7Sxemkq/99HFDdfvZTl+UnzJjmB9KAmOaRbeP9EE6OuuanOO15khJVNxZmsVennvbetrY27776b++67j0984hP89re/5etf/zo33HAD9957L0uWLOHxxx/H7XZz77338thjj/GDH/yA5557jmuuuYadO3fidDq57777GBwc5KWXXiIyMpJHH32UBx98kJdeemnOP68QYmYdHR04nU56Blwcr2qnoqaD4VE39tgUsp023yGlaYkOVhamsjw/kciI0FsefqlIgprgcGVrQJITmL8dHa5snVWCevvtt8nNzeXmm28G4Oabb+ZnP/sZAA899JDvlN2GhgYSEhKoqqqa8nW+8pWvYLfbsdvtNDQ04HQ6g36ssxAL3fDwMMfKjnO0oo6RiBRc1li/63a7nQiblaW5iawsTCEjOSZsVuJdDElQE6xZnhbQHtSa5WmzuretrY2MDP+S9ueOaj9z5gzf/va3aWxspLCwkKioqClLmAC0tLTwzW9+k5MnT7Jo0SJSU1OnvVcIMfd6B0Z4Z/9J9hyqZcQFFks7WVl236KmxLgoVhamUFSQTHTUwvqRvbA+7SysVemz6tEEWnp6Og0N/gcSNzc343K5uOuuu3jwwQf5+Mc/DsBPf/pTnn/++Slf56//+q+55ZZbePrpp7Farfz+979n3759cx6/EGKMYRg0tvVzqLKVM409GIaBNSIaXEM4HA5sNhuFOQmsLEwlNz1uQfSWpiIJKkzs2LGDRx55hF/+8pfcdtttvPLKKxw7dowdO3YwPDxMdHQ0AMePH+fpp5/2PbbbzWWmvb29OJ1O+vr6iI6Oxmq1UlNTwxNPPOGreiyEmFsej0Hl2TYOV7bR1u2/RDw5OZmoCNhQkkfxkhTiHLItZP4s95jnEhMTeeqpp/jv//5vNmzYwPPPP8/ll19OTEwM//RP/8QDDzzA+vXr+frXv86nP/1pGhoa6O/vJy0tjauvvprrr7+et99+m4ceeoif//znrF27li9+8Yt84hOfYHR0lNra2mB/RCHmLZfbQ1lVG//x7D5+8uv3KD9V53c9LyOeT1y5jC/duoFNJZmSnLws833+QSm1CDj9xhtv+OZszikvL2fFihVBiWs+kn9P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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "system = make_system(best_params, data)\n",
    "results = run_simulation(system, update)\n",
    "\n",
    "plot_results(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The mean absolute error is better than for Model 1, but that doesn't mean much.  The model still doesn't fit the data well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.618490489889673"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_abs_error(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the estimated fractal dimension is 3.11, which doesn't seem likely.\n",
    "\n",
    "Let's try one more thing."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model 3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Models 1 and 2 imply that trees can grow forever, but we know that's not true.  As trees get taller, it gets harder for them to move water and nutrients against the force of gravity, and their growth slows.\n",
    "\n",
    "We can model this effect by adding a term to the model similar to what we saw in the logistic model of population growth.  Instead of assuming:\n",
    "\n",
    "$ m_{n+1} = m_n + \\alpha A $ \n",
    "\n",
    "Let's assume\n",
    "\n",
    "$ m_{n+1} = m_n + \\alpha A (1 - h / K) $\n",
    "\n",
    "where $K$ is similar to the carrying capacity of the logistic model.  As $h$ approaches $K$, the factor $(1 - h/K)$ goes to 0, causing growth to level off.\n",
    "\n",
    "Here's what the implementation of this model looks like:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2.0, 2.5, 150]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alpha = 2.0\n",
    "dim = 2.5\n",
    "K = 150\n",
    "\n",
    "params = [alpha, dim, K]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's an updated version of `make_system`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_system(params, data):\n",
    "    \"\"\"Makes a System object.\n",
    "    \n",
    "    params: sequence of alpha, dim, K\n",
    "    data: Series\n",
    "    \n",
    "    returns: System object\n",
    "    \"\"\"\n",
    "    alpha, dim, K = params\n",
    "    \n",
    "    t_0 = get_first_label(data)\n",
    "    t_end = get_last_label(data)\n",
    "\n",
    "    h_0 = get_first_value(data)\n",
    "\n",
    "    return System(alpha=alpha, dim=dim, K=K, \n",
    "                  h_0=h_0, t_0=t_0, t_end=t_end)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the new `System` object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>alpha</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>dim</th>\n",
       "      <td>2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>K</th>\n",
       "      <td>150.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>h_0</th>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>70.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "alpha      2.0\n",
       "dim        2.5\n",
       "K        150.0\n",
       "h_0        1.4\n",
       "t_0        2.0\n",
       "t_end     70.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system = make_system(params, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's the new update function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def update3(height, t, system):\n",
    "    \"\"\"Update height based on geometric model with growth limiting term.\n",
    "    \n",
    "    height: current height in feet\n",
    "    t: what year it is\n",
    "    system: system object with model parameters\n",
    "    \"\"\"\n",
    "    area = height**2\n",
    "    mass = height**system.dim\n",
    "    mass += system.alpha * area * (1 - height/system.K)\n",
    "    return mass**(1/system.dim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As always, we'll test the update function with the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.075043351397076"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "update3(h_0, t_0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can test the error function with the new update function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2.0, 2.5, 150]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2      0.000000\n",
       "3      0.515043\n",
       "4      0.920001\n",
       "5      1.216367\n",
       "6      1.431972\n",
       "8      1.685640\n",
       "10     1.801190\n",
       "15     1.975039\n",
       "20     3.929748\n",
       "25     7.701256\n",
       "30    11.775782\n",
       "35    15.027748\n",
       "40    16.865948\n",
       "45    17.173291\n",
       "50    16.106566\n",
       "55    13.967791\n",
       "60    11.095254\n",
       "65     7.785693\n",
       "70     4.284147\n",
       "dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "error_func(params, data, update3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And search for the best parameters."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[  2.    2.5 150. ]\n",
      "[  2.    2.5 150. ]\n",
      "[  2.    2.5 150. ]\n",
      "[  2.00000003   2.5        150.        ]\n",
      "[  2.           2.50000004 150.        ]\n",
      "[  2.           2.5        150.00000224]\n",
      "[  2.57150998   2.62640233 152.85619548]\n",
      "[  2.57151002   2.62640233 152.85619548]\n",
      "[  2.57150998   2.62640237 152.85619548]\n",
      "[  2.57150998   2.62640233 152.85619775]\n",
      "[  2.69480841   2.64180464 164.38502718]\n",
      "[  2.69480845   2.64180464 164.38502718]\n",
      "[  2.69480841   2.64180467 164.38502718]\n",
      "[  2.69480841   2.64180464 164.38502963]\n",
      "[  2.69504971   2.64141865 165.06670862]\n",
      "[  2.69504975   2.64141865 165.06670862]\n",
      "[  2.69504971   2.64141869 165.06670862]\n",
      "[  2.69504971   2.64141865 165.06671108]\n",
      "[  2.69600956   2.64152837 165.08460657]\n",
      "[  2.6960096    2.64152837 165.08460657]\n",
      "[  2.69600956   2.64152841 165.08460657]\n",
      "[  2.69600956   2.64152837 165.08460903]\n",
      "[  2.69593577   2.64152036 165.08358693]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>fvec</th>\n",
       "      <td>[0.0, 0.6026560697086136, 1.1051308784106184, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>nfev</th>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>fjac</th>\n",
       "      <td>[[-935.0854735477023, -0.0005819515032659498, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ipvt</th>\n",
       "      <td>[2, 1, 3]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qtf</th>\n",
       "      <td>[-1.8155922127449653e-05, -0.00029942939542415...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cov_x</th>\n",
       "      <td>[[0.034808802477415246, 0.003865949037799679, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mesg</th>\n",
       "      <td>Both actual and predicted relative reductions ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ier</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "fvec     [0.0, 0.6026560697086136, 1.1051308784106184, ...\n",
       "nfev                                                    21\n",
       "fjac     [[-935.0854735477023, -0.0005819515032659498, ...\n",
       "ipvt                                             [2, 1, 3]\n",
       "qtf      [-1.8155922127449653e-05, -0.00029942939542415...\n",
       "cov_x    [[0.034808802477415246, 0.003865949037799679, ...\n",
       "mesg     Both actual and predicted relative reductions ...\n",
       "ier                                                      1\n",
       "dtype: object"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_params, details = leastsq(error_func, params, data, update3)\n",
    "details"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With these parameters, we can fit the data much better."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhb1Zn48a8kS5Zted+3OHZITsi+ESAsIYFSdhiW0pm2QNtpmcJ0mHbozFB+0NKBUqbA0I0JFKYttJ1OW0pbtrATlgRIyJ44J44TO953W7blRcv9/XFlRzaJYxLLkuz38zx5Ip17Lb1KZL06557zHothGAghhBDRxhrpAIQQQoijkQQlhBAiKkmCEkIIEZUkQQkhhIhKcZEOINyUUvHAaUAD4I9wOEIIIUayAfnAZq31QOiBKZ+gMJPTO5EOQgghxJjOAd4NbZgOCaoB4De/+Q15eXmRjkUIIUSIxsZGPve5z0HwszrUdEhQfoC8vDyKiooiHYsQQoij+9glGJkkIYQQIipJghJCCBGVIjLEp5RaCTyvtc45yrGfAAu11ueFtH0G+D7mTI8NwE1a6+ZJClcIIUQETGoPSillUUr9PfAK4DjK8YuBr41qmwc8CdwEZAIVwO/CHqwQQoiImuwe1D3ApcC9wP8LPaCUygZ+Avw3sDDk0OeB57TW7wbPuwPoUErN1lpXnGxAbreb5uZmvF7vyT7UtGW328nJySElJSXSoQghppDJTlDrtNZ3K6XOO8qx/wF+ALgYmaDmAVuG7mitPUqpmuA5J5Wg3G43TU1NFBYWkpCQgMViOZmHm5YMw6Cvr4+6ujoASVJCiAkzqUN8Wuv6o7UrpW4BAlrrJ45y2AV4RrV5gMSTjae5uZnCwkISExMlOZ0gi8VCYmIihYWFNDfLZUEhpgPDMKhr6eGNLTW8/H41PX3hGYGK+DoopdSpwLeAlcc4pRdIGNWWCPSc7HN7vV4SEkY/tDgRCQkJMkwqxBTX0+dlX1U75VXtdPUMEPD7sdpsOB02Vi+b+HWmEU9QwNVADlChlAKIB+xKqU6tdRqwF1BDJyulEoEZwfaTJj2niSH/jkJMTX5/gEMNbsoPtXO4qZvQTW47OjvJzMggPyspLM8d8QSltb4PuG/ovlLqn4GrQqaZ/xZ4N3jdahNwP7BNa71/kkMVQohpo62rj72H2tHV7XS6ewFwOp3Dx+PtNhadko0qSWPOjPSwxBDxBHU8WutdSqkvAeuAQuAD4LrIRjW1/OQnP6G8vJxHH310zPNqa2s5//zz2bx5s0yGEGIK6h/0UVHTSfmhdpo7PAwMDNDS0oLf7yc+Pt4sGZeTzLzSDMoKUzECfurrjzq1YEJEJEFprd8C0o5x7BHgkVFtzwDPhD8yIYSYXgzDoLa5h72H2jhU78bnDwwfs9vtBAIB4uMgzzXIdWtKyc1KPfLDNislJSVhiy3qe1DiiNraWq666ipuu+021q1bh9fr5etf/zpWq5V169YxODjI1772NW666SY2btzIQw89xKFDhygsLOTWW2/loosuGn6cO++8k507d1JWVkZZWdmI5/n973/Pk08+SXt7O4sWLeK73/0uxcXFkXjJQogw6fYMUl7Vzta9dTS3deHxeCgoKMBqNSd326wWZhdnUpbuwYF5LCXpY/UVwkoS1FFordm/37zENWfOHIKTN4bt2bOHgwcPAjBv3jxmzZo14vjOnTuprq4GYNGiRR/7hrF161bq6uqO+tjH093dze7du3nzzTd57bXXuP3227nyyit5/fXXeeedd/j617/OwoULufnmm3nggQe48MIL2bx5M7fccgvZ2dksX76c2267jXnz5vHzn/8crTVf/vKXWbFiBQCvvPIKP/7xj3nssceYPXs2v/jFL/jKV77C888//4niFEJEH58/wMG6Lsqr2qlt7sEwDBobWxgYMPcJ9Hg8lBZlM680k9nFaTjj4xgczMdut0dkIpQkqBh0yy234HA4OPPMM/H7/dxwww04HA7WrFmD3+/nf/7nfzj99NO55JJLADjzzDO5/PLLefbZZ8nJyWH37t088cQTOBwOFi5cyJVXXjm80Pb3v/89N9xwA/Pnzwfgq1/9Kk8//TQffPBBWLvyQojwaenoY9u+Og7UugmMWv6alJiE3zdATrKFxbPsrD135Jdmh2Nye02hJEHFoLQ08/KdzWYDIDk5GWC4a97f309hYeGInykqKuKDDz6gpaWF+Ph40tPTRxwbSlD19fU8+uijPP7448PHvV4v9fX1kqCEiCGDXj+6uoMte2uprG5kYGCAxMREsrOzAXNpSHGui1lL8/F5mikuKhzxuRANJEEdhVJqzKG3+fPnD/cwjmbRokUsWrTomMeXLVvG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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "system = make_system(best_params, data)\n",
    "results = run_simulation(system, update3)\n",
    "\n",
    "plot_results(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the mean absolute error is substantually smaller."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8895329463347671"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_abs_error(results, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The estimated fractal dimension is about 2.6, which is plausible for a tree.\n",
    "\n",
    "Basically, it suggests that if you double the height of the tree, the mass grows by a factor of $2^{2.6}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.062866266041593"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2**2.6"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In other words, the mass of the tree scales faster than area, but not as fast as it would for a solid 3-D object.\n",
    "\n",
    "What is this model good for?\n",
    "\n",
    "1) It offers a possible explanation for the shape of tree growth curves.\n",
    "\n",
    "2) It provides a way to estimate the fractal dimension of a tree based on a growth curve (probably with different values for different species).\n",
    "\n",
    "3) It might provide a way to predict future growth of a tree, based on measurements of past growth.  As with the logistic population model, this would probably only work if we have observed the part of the curve where the growth rate starts to decline."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analysis\n",
    "\n",
    "With some help from my colleague, John Geddes, we can do some analysis.\n",
    "\n",
    "Starting with the difference equation in terms of mass:\n",
    " \n",
    "$m_{n+1} = m_n + \\alpha A (1 - h / K) $\n",
    "\n",
    "We can write the corresponding differential equation:\n",
    "\n",
    "(1) $ \\frac{dm}{dt} = \\alpha A (1 - h / K) $\n",
    "\n",
    "With\n",
    "\n",
    "(2) $A = h^2$\n",
    "\n",
    "and\n",
    "\n",
    "(3) $m = h^D$\n",
    "\n",
    "Taking the derivative of the last equation yields\n",
    "\n",
    "(4) $\\frac{dm}{dt} = D h^{D-1} \\frac{dh}{dt}$\n",
    "\n",
    "Combining (1), (2), and (4), we can write a differential equation for $h$:\n",
    "\n",
    "(5) $\\frac{dh}{dt} = \\frac{\\alpha}{D} h^{3-D} (1 - h/K)$\n",
    "\n",
    "Now let's consider two cases:\n",
    "\n",
    "* With infinite $K$, the factor $(1 - h/K)$ approaches 1, so we have Model 2.\n",
    "* With finite $K$, we have Model 3.\n",
    "\n",
    "#### Model 2\n",
    "\n",
    "Within Model 2, we'll consider two special cases, with $D=2$ and $D=3$.\n",
    "\n",
    "With $D=2$, we have\n",
    "\n",
    "$\\frac{dh}{dt} = \\frac{\\alpha}{2} h$\n",
    "\n",
    "which yields exponential growth with parameter $\\alpha/2$.\n",
    "\n",
    "With $D=3$, we have Model 1, with this equation:\n",
    "\n",
    "$\\frac{dh}{dt} = \\frac{\\alpha}{3}$\n",
    "\n",
    "which yields linear growth with parameter $\\alpha/3$.\n",
    "\n",
    "This result explains why Model 1 is linear.\n",
    "\n",
    "\n",
    "\n",
    "#### Model 3\n",
    "\n",
    "Within Model 3, we'll consider two special cases, with $D=2$ and $D=3$.\n",
    "\n",
    "With $D=2$, we have\n",
    "\n",
    "$\\frac{dh}{dt} = \\frac{\\alpha}{2} h (1 - h/K)$\n",
    "\n",
    "which yields logisitic growth with parameters $r = \\alpha/2$ and $K$.\n",
    "\n",
    "With $D=3$, we have\n",
    "\n",
    "$\\frac{dh}{dt} = \\frac{\\alpha}{3} (1 - h/K)$\n",
    "\n",
    "which yields a first order step response; that is, it converges to $K$ like a negative exponential:\n",
    "\n",
    "$ h(t) = c \\exp(-\\frac{\\alpha}{3K} t) + K $\n",
    "\n",
    "where $c$ is a constant that depends on the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "alpha = 10\n",
    "D = 3\n",
    "K = 200\n",
    "params = alpha, D, K\n",
    "system = make_system(params, data)\n",
    "results = run_simulation(system, update3);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = results.index\n",
    "a = alpha/3\n",
    "h = (-220) * exp(-a * t / K) + K\n",
    "plot(t, h)\n",
    "plot(results)\n",
    "decorate(xlabel='Time (years)',\n",
    "         ylabel='Height (feet)')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Additional resources:\n",
    "\n",
    "Garcia, [A stochastic differential equation model for the\n",
    "height growth of forest stands](http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=664FED1E46ABCBF6E16741C294B79976?doi=10.1.1.608.81&rep=rep1&type=pdf)\n",
    "\n",
    "[EasySDE software and data](http://forestgrowth.unbc.ca/)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
